class Environment():

	def __init__(self):
		Inicjalizacja środowiska
	
	def get_random_state(self):
		Zwracamy losowy możliwy stan gry
			
	def get_qvalue(self, random_state, action):
		Zwracamy wartość Q losowego stanu
		
	def update(self, action):
		Aktualizacja środowiska, przejście do kolejnego stanu i zwrócenie wartości Q nowego stanu

	def get_reward(self, random_state, action):
	    Zwraca nagrodę po rozegraniu akcji w losowym możliwym stanie
			
	def calculate_TD(self, qvalue, next_state, reward, gamma):
		Zwraca obliczoną różnicę czasową: TD = reward + gamma*max(qvalues_next_state) - qvalue

	def update_qvalue(self, TD, qvalue, alpha):
	    Aktualizuje qvalue za pomocą: qvalue = qvalue + alpha * TD


class AI():
	
	def __init__(self):
		Inicjalizacja AI

	def play_action(self):
		Rozegranie losowej akcji


env = Environment()
ai = AI()

Initialize gamma
Initialize alpha

while True:
	random_state = env.get_random_state()

	action = ai.play_action()
	
	qvalue = env.get_qvalue(random_state, action)

	next_state = env.update(action)

	reward = env.get_reward(random_state, action)

	TD = env.calculate_TD(qvalue, next_state, reward, gamma)

	env.update_qvalue(TD, qvalue, alpha)
